package com.zhentao.dataintegrity.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhentao.dataintegrity.domain.dto.ExecutionRecordDTO;
import com.zhentao.dataintegrity.domain.dto.IntegrityTaskDTO;
import com.zhentao.dataintegrity.domain.dto.SubtaskDetailDTO;

import java.time.LocalDate;
import java.util.List;

public interface IntegrityExecutionService {

    /**
     * 执行完整性检查任务
     */
    String executeTask(IntegrityTaskDTO task, String triggerType, LocalDate startDate, LocalDate endDate);

    /**
     * 分页查询执行记录
     */
    IPage<ExecutionRecordDTO> getExecutionPage(int pageNo, int pageSize, Long taskId, String executionStatus, String triggerType);

    /**
     * 获取执行记录详情
     */
    ExecutionRecordDTO getExecutionDetail(String executionId);

    /**
     * 分页查询子任务详情
     */
    IPage<SubtaskDetailDTO> getSubtaskPage(int pageNo, int pageSize, String executionId, String dataTypeCode, String executionStatus);

    /**
     * 根据任务ID查询执行记录
     */
    List<ExecutionRecordDTO> getExecutionsByTaskId(Long taskId);

    /**
     * 取消执行
     */
    boolean cancelExecution(String executionId);

    /**
     * 获取运行中的执行记录
     */
    List<ExecutionRecordDTO> getRunningExecutions();

    /**
     * 获取最近的执行记录
     */
    List<ExecutionRecordDTO> getRecentExecutions(int limit);

    /**
     * 清理历史记录
     */
    boolean cleanHistory(int keepDays);

    /**
     * 导出任务列表
     */
    byte[] exportTaskList(String taskTitle, String taskStatus, String triggerType);

    /**
     * 导出子任务详情
     */
    byte[] exportSubtaskDetails(String executionId, String dataTypeCode, String executionStatus);
}
